"""
示例：在 Pathway 中根据字符串列 name 从表 A 中筛选出不在表 B 中的行（anti-join）。
:note: 注释与文档采用 reStructuredText 风格。
"""

import pathway as pw

# 示例输入表（调试用）
A = pw.debug.table_from_markdown(
    '''
id | name  | value
1  | Alice | 10
2  | Bob   | 20
3  | Carol | 30
4  | Dan   | 40
'''
)

B = pw.debug.table_from_markdown(
    '''
id | name
11 | Bob
12 | Carol
'''
)

# 方法：左连接后筛选右表 name 为 None 的行（即在 A 中但不在 B 中）
result = (
    A.join_left(B, A.C.name == B.C.name)           # 将 A 左连接到 B，按 name 相等做匹配
     .select(*pw.left, b_name=pw.right.name)      # 从 join 结果中把左表所有列和右表的 name 取为临时列 b_name
     .filter(pw.this.b_name == None)              # 筛选出右表 name 为 None（即无匹配）的行）
     .select(*pw.this.without("b_name"))          # 去掉临时列 b_name，保留原始 A 的列
)

# 输出结果（调试用）
pw.debug.compute_and_print(result, include_id=False)
